import axios from 'axios'

//调用仓库在stores里面，选择对应的出口就行
import {useUserStore} from '@/stores'

//不需要自己导入element包
// import { ElMessage } from 'element-plus'
import router from '@/router'  //因为router的index.js里面有出口
const baseURL = 'http://big-event-vue-api-t.itheima.net'

//这个instance就是axios的一个实例，里面内置有get  post请求
const instance = axios.create({
  // TODO 1. 基础地址，超时时间
	baseURL,
	timeout:10000   //超时时间
})

//请求拦截器--->填写headers
instance.interceptors.request.use(
  (config) => {
    // TODO 2. 携带token--->在仓库里面
		const useStore=useUserStore()
		//如果仓库中具有token，那么给headers中挂上headers
		if(useStore.token){
			// console.log('token的headers',useStore.token)
			config.headers.Authorization=useStore.token
		}
    return config
  },
  (err) => Promise.reject(err)
)

//响应拦截器-->处理到底返回的是成功还是失败
instance.interceptors.response.use(
  (res) => {
    // TODO 3. 处理业务失败
		// TODO 4. 摘取核心响应数据
		// console.log(res);
		if(res.data.code===0){
			//成功接受数据返回res
			return res
		}else{
			//业务处理失败
			//抛出错误结果
			//从element-plus组件中调用的
			//res.data.message是axios请求到的数据,
			ElMessage.error(res.data.message || '服务器异常')
			return Promise.reject(res.data)
		}
  
    return res
  },
  (err) => {
    // TODO 5. 处理401错误
		if(err.response?.status===401){
			router.push('/login')
		}
	
		//默认情况
		ElMessage.error(err.response?.data?.message || '服务器异常')
    return Promise.reject(err)
  }
)

// 默认导出
export default instance
//按需导出
export {baseURL}